home *** CD-ROM | disk | FTP | other *** search
- // Filters xml file with current assignment and transforms it with
- // XSLT transform
- function TransformXMLWithAssignment(xmlDoc, xslPath)
- {
- var srcTree = new ActiveXObject("Msxml2.DOMDocument.4.0");
- srcTree.async=false;
- srcTree.load(xmlDoc);
-
- // removes those rule which don't agree with assignment
- srcTree = filterByAssignment(srcTree);
-
- var xsltTree= new ActiveXObject("Msxml2.DOMDocument.4.0");
- xsltTree.async = false;
- xsltTree.load(xslPath);
-
- return srcTree.transformNode(xsltTree);
-
- }
-
- function TransformXML(xmlDoc, xslPath)
- {
- return TransformXMLWithParams(xmlDoc, xslPath)
- }
-
- // Transforms XML file with xsl template.
- // This method also takes parameters from url and add them to xml file as follows:
- // <Document>
- // ...
- // ... content of xml ...
- // ...
- // <Params>
- // <Param name="name1>value1<Param>
- // <Param name="name2>value2<Param>
- // ...
- // </Params>
- // </Document>
- //
- // If params parameter is given, it is added to URL as additional parameters.
- function TransformXMLWithURLParams(xmlDoc, xslPath, params)
- {
- // get URL parameters and call TransformXMLWithParams(xmlDoc, xslPath, params)
- parString = document.location.href.split("?");
- if (!params)
- params = "";
-
- if (parString.length > 1 )
- {
- return TransformXMLWithParams(xmlDoc, xslPath, parString[1] + "&" + params);
- }
- else
- {
- return TransformXMLWithParams(xmlDoc, xslPath, params);
- }
- }
-
- // This function is the same as TransformXMLWithURLParams(xmlDoc, xslPath) with one exception.
- // Parameters are not taken from url but they are only included as an input parameter of this function.
- // Syntax of param string is the same as url params, e.g. param1=value1¶m2=value2&...
- function TransformXMLWithParams(xmlDoc, xslPath, params)
- {
- var srcTree = new ActiveXObject("Msxml2.DOMDocument.4.0");
- srcTree.async=false;
- srcTree.load(xmlDoc);
-
- if (params != null && params.length > 0)
- {
- // create Params tag as a child of Document
- var nodeRoot = srcTree.selectSingleNode("Document");
- var nodeParams = srcTree.createElement("Params");
- nodeRoot.appendChild(nodeParams);
-
- // parse parameters 'params' and add them to Params tag
-
- // set of parameters
- var pars = params.split("&");
- for (var i = 0; i < pars.length; i++)
- {
- var paramParts = pars[i].split("=");
-
- // create Param tag
- var paramTag = srcTree.createElement("Param");
- paramTag.setAttribute("name", unescape(paramParts[0]));
- paramTag.text = unescape(paramParts[1]);
- nodeParams.appendChild(paramTag);
- }
- }
-
- var xsltTree= new ActiveXObject("Msxml2.DOMDocument.4.0");
- xsltTree.async = false;
- xsltTree.load(xslPath);
-
- return srcTree.transformNode(xsltTree);
- }
-
- function filterByAssignment(srcTree)
- {
- var rlNode = srcTree.selectSingleNode("SecDb/RuleList");
-
- var treeNode = null
- if (rlNode && rlNode.hasChildNodes)
- treeNode = rlNode.firstChild;
-
- var maxNo = 0;
-
- while (treeNode)
- {
- // ID of current rule
- var ruleId = treeNode.attributes == null ? "" : treeNode.getAttribute("id");
-
- // Device rule
- if (ruleId.substring(0, 2) == "DS")
- {
- // set max rule number
- var ruleNo = ruleId.substring(2)*1;
- if (ruleNo > maxNo)
- maxNo = ruleNo;
-
- var assgn = treeNode.getAttribute("filter");
- if (!assgn)
- assgn = "";
-
- // check if assignment string consists only from "?" (?,?,?,...)
- var anyAssgn = true;
- var values = ctrlAsgnmt.Assignment.split(",");
- for (var i = 0; i < values.length; i++)
- if (values[i] != "?")
- anyAssgn = false;
-
- // filter bad assignment rules
- if ((!anyAssgn || ((assgn != "") && (assgn != "*"))) && (ctrlAsgnmt.Assignment != assgn))
- {
- var remNode = treeNode;
- treeNode = treeNode.previousSibling;
- // remove this rule from srcTree
- rlNode.removeChild(remNode);
- }
- }
-
- /// get next rule
- if (treeNode == null)
- treeNode = rlNode.firstChild;
- else
- treeNode = treeNode.nextSibling;
- }
-
- maxRuleID.value = maxNo;
- return srcTree;
- }
-
- // Returns object with ID 'objId'
- function getObj(objId)
- {
- if (document.getElementById)
- return document.getElementById(objId);
- else if (document.all)
- selects = document.all[objId];
- else
- return null;
- }
-
-